package com.adam.kafkamq.delay;

import org.springframework.boot.actuate.health.Health;
import org.springframework.boot.actuate.health.HealthIndicator;
import org.springframework.boot.actuate.health.Status;

import javax.annotation.Resource;

/**
 * <p>
 * 基于spring-actuator拓展的健康检查指标，KafkaDelayHealthIndicator通过kafkaDelayConsumerManager的health方法来获取延迟消费的状态。
 * 这样只要应用配置了/actuator/health的健康检查都会检查我们延迟消费的状态。在状态不对时可以报警或者直接重启应用。
 * 如果业务中没有使用spring-actuator则可考虑自己暴露相关接口来进行健康检查。
 * </p>
 *
 * @author Adam
 * @date 2022/12/8 16:58
 * @desc 主要负责初始化kafka消费线程和监控线程
 */
public class KafkaDelayHealthIndicator implements HealthIndicator {

    @Resource
    private KafkaDelayConsumerManager kafkaDelayConsumerManager;

    @Override
    public Health health() {
        Status status = kafkaDelayConsumerManager.health();
        if(Status.UP == status ){
            return Health.up().build();
        }else if(Status.OUT_OF_SERVICE == status){
            return Health.outOfService().build();
        }else {
            return Health.down().build();
        }

    }
}
